/****************************************************************
 **                                                             *
 ** Nombre: GestorDatosGeneralesAlumno.java                     *
 ** Versión: 1.0.0                                              *
 ** Autor:Alonso Fabian Orozco Perez                            *
 ** Creado: 25-mar-2013                                         *
 ** Modificado:                                                 *
 ** Diagrama:GAPI v4.5.6                                        *
 ** Caso de uso: MCAAL1                                         *
 ****************************************************************/
package Servicios;

import DAO.DAOCuentas;
import DAO.DAODatosGeneralesAlumno;
import DAO.DAOInformacionPersonal;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Clase encargada de actualizar los datos generales de un alumno
 * @author Alonso
 */
public class GestorDatosGeneralesAlumno extends HttpServlet {

    /**
     * Processes requests for both HTTP
     * <code>GET</code> and
     * <code>POST</code> methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        String nombreUsr = request.getParameter("nombreUsuario");
        String nombre = request.getParameter("nombre");
        String apellido1 = request.getParameter("apePat");
        String apellido2 = request.getParameter("apeMat");
        String dir = request.getParameter("dir");
        String sexo = request.getParameter("sexo");
        String tel = request.getParameter("tel");
        String edad_string = request.getParameter("edad");
        int edad = Integer.parseInt(edad_string);
        try {
            actualizarDatosGeneralesAlumno(nombreUsr,nombre,apellido1,apellido2,dir,sexo,tel,edad);
            out.println("<h1>Se han actualizado los datos. Los cambios se ver&aacute;n reflejados en su siguiente inicio de sesi&oacute;n.</h1>");
        } finally {
            out.close();
        }
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP
     * <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP
     * <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

    /**
     * Método encargado de actualizar los datos generales de un alumno.
     * @param nombreUsuario - el nombre de usuario de la cuenta
     * @param nombre- el nombre del alumno
     * @param apellido1 - El primer apellido del alumno
     * @param apellido2 - El segundo apellido del alumno
     * @param dir - La dirección del alumno
     * @param sexo - El sexo del alumno
     * @param tel - El teléfono del alumno
     * @param edad - La edad del alumno.
     */
    private void actualizarDatosGeneralesAlumno(String nombreUsuario, String nombre, String apellido1, String apellido2, String dir, String sexo, String tel, int edad) {
        try {
            DAOInformacionPersonal ctrl_infoPersonal = new DAOInformacionPersonal();
            DAOCuentas ctrl_cuentas = new DAOCuentas();
            ResultSet registro_cuenta = ctrl_cuentas.buscarCuenta(nombreUsuario);
            int clv_infoPersonal = 0;
           
            while(registro_cuenta.next()){
                try {
                   clv_infoPersonal = (int) registro_cuenta.getObject(4);
                } catch (SQLException ex) {
                    Logger.getLogger(GestorDatosGeneralesAlumno.class.getName()).log(Level.SEVERE, null, ex);
                }
                }
            DAODatosGeneralesAlumno ctrl_infoGeneral_alumno = new DAODatosGeneralesAlumno();
            ctrl_infoPersonal.actualizarInformacionPersonal(clv_infoPersonal,nombre,apellido1,apellido2);
            ctrl_infoGeneral_alumno.actualizarDatosGeneralesAlumno(nombreUsuario, dir, sexo,tel,edad);
        } catch (SQLException ex) {
            Logger.getLogger(GestorDatosGeneralesAlumno.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}
